﻿using System;
using System.Collections.Generic;

namespace Entity
{
    public class TransferOrderDTO
    {
        public string TransnoNo { get; set; }        // 调拨单号
        public string DocumentStatus { get; set; }  // 单据状态（数字）
        public DateTime? Tfrrqdt { get; set; }    // 调拨申请日期
        public string TransferType { get; set; }    // 调拨类型
        public int OutWarehouseId { get; set; }  // 调出仓库ID
        public int InWarehouseId { get; set; }   // 调入仓库ID
        public string OutWarehouseName { get; set; } // 调出仓库
        public string InWarehouseName { get; set; }  // 调入仓库
        public string OutboundStatus { get; set; }  // 出库状态（数字）
        public string StorageStatus { get; set; }   // 入库状态（数字）
        public int TransferQuantity { get; set; }   // 调拨数量
        public decimal transferAmount { get; set; }  // 调拨总金额（修正：与前端绑定字段一致）

        public string HandlerName { get; set; }     // 经办人
        public DateTime? CreateTime { get; set; } // 制单时间
        public string ProductName { get; set; }     // 调拨货品
        public string MakerName { get; set; }       // 制单人
        public string DepartmentName { get; set; }  // 所在部门
        public string ReviewerName { get; set; }    // 审核人
        public DateTime? ReviewTime { get; set; }   // 审核时间
        public int TransferOrderId { get; set; }    // 调拨单ID
        public string UpdateBy { get; set; }
        public string Note { get; set; }  // 备注字段

        // 出库状态文字转换（不变）
        public string OutboundStatusText
        {
            get
            {
                var statusMap = new Dictionary<string, string>
                { {"0", "未出库"}, {"1", "部分出库"}, {"2", "已出库"}, {"", "-"} };
                return statusMap.TryGetValue(OutboundStatus ?? "", out var text) ? text : $"未知({OutboundStatus})";
            }
        }

        // 入库状态文字转换（不变）
        public string StorageStatusText
        {
            get
            {
                var statusMap = new Dictionary<string, string>
                { {"0", "未入库"}, {"1", "部分入库"}, {"2", "已入库"}, {"", "-"} };
                return statusMap.TryGetValue(StorageStatus ?? "", out var text) ? text : $"未知({StorageStatus})";
            }
        }

        // 明细列表
        public List<TransferOrderDetailDTO> details { get; set; } = new List<TransferOrderDetailDTO>();
    }

    // 明细DTO（不变）
    public class TransferOrderDetailDTO
    {
        public string product_code { get; set; }         // 货品编号
        public string product_name { get; set; }         // 货品名称
        public string specification_model { get; set; }  // 规格型号
        public string product_type { get; set; }         // 货品类型
        public int transfer_quantity { get; set; }       // 调拨数量
        public decimal in_price { get; set; }            // 入库单价
        public string note { get; set; } // 备注
        public decimal transfer_amount { get; set; }     // 调拨金额（明细行）
    }

    // 调拨单创建DTO（不变）
    public class TransferOrderCreateDTO
    {
        public TransferOrderCreateDTO()
        {
            details = new List<TransferOrderDetailDTO>();
            is_delete = 0;
            transferType = "1";
            documentStatus = "0";
            outboundStatus = "0";
            storageStatus = "0";
            whloc = "";
            trwareloc = "";
            note = "";
            reviewer = "";
            review_time = new DateTime(1900, 1, 1);
        }

        public string transnoNo { get; set; }          // 调拨单号
        public string transferType { get; set; }       // 调拨类型
        public DateTime tfrrqdt { get; set; }          // 调拨申请日期
        public int outWarehouseId { get; set; }        // 调出仓库ID
        public int inWarehouseId { get; set; }         // 调入仓库ID
        public string whloc { get; set; }              // 调出仓位
        public string trwareloc { get; set; }          // 调入仓位
        public int handlerId { get; set; }             // 经办人ID
        public string note { get; set; }               // 备注
        public string documentStatus { get; set; }     // 单据状态
        public string outboundStatus { get; set; }     // 出库状态
        public string storageStatus { get; set; }      // 入库状态
        public string createBy { get; set; }           // 创建人（账号）
        public DateTime createTime { get; set; }       // 创建时间
        public string updateBy { get; set; }           // 更新人（账号）
        public DateTime updateTime { get; set; }       // 更新时间
        public string organizations_id { get; set; }   // 所属组织ID
        public string reviewer { get; set; }           // 审核人（账号）
        public DateTime review_time { get; set; }      // 审核时间
        public int is_delete { get; set; }             // 是否删除
        public List<TransferOrderDetailDTO> details { get; set; } // 明细列表
    }

    // 审核请求DTO（新增）
    public class AuditRequestDTO
    {
        public int transferOrderId { get; set; }
    }
    // 导出DTO
    public class TransferOrderExportDTO
    {
        public string TransnoNo { get; set; }
        public string DocumentStatusText { get; set; }
        public string Tfrrqdt { get; set; }
        public string TransferType { get; set; }
        public string OutWarehouseName { get; set; }
        public string InWarehouseName { get; set; }
        public string OutboundStatusText { get; set; }
        public string StorageStatusText { get; set; }
        public decimal TransferQuantity { get; set; }
        public decimal TransferAmount { get; set; }
        public string HandlerName { get; set; }
        public string ProductName { get; set; }
        public string MakerName { get; set; }
        public string DepartmentName { get; set; }
        public string CreateTime { get; set; }
        public string ReviewerName { get; set; }
        public string ReviewTime { get; set; }
    }
}